<?php if ( !defined('BASEPATH')) exit('No direct script acess allowed');

class Categoria extends CI_Controller{


    	function __construct(){
		parent::__construct();
		
		//if (($this->session->userdata('status')) <> "logado"){
                //echo '<script language="JavaScript"> window.location="'.(base_url('administracao')).'"; </script>'; 
                //}
        }
		

    public function index($pg=0,$opcao=1,$id_cate_anterior=0,$data=null){
        
        $this->load->model('ccategoria');
        
        if($opcao==1){
            
            $pg = $pg -1;
            $numreg = 5; // Quantos registros por p�gina vai ser mostrado
            $inicial = ($pg * 5); 
            $data['registro'] = $this->ccategoria->get_all_categoria_com_paginacao($inicial,$numreg);
            $data['quantreg'] = $this->ccategoria->conta_registro_categoria();
            $data['numreg'] = $numreg;
            $data['pgg'] = $pg;
            $data['opcao_menu'] = $this->ccategoria->solicita_nome_opcoes_menu();


            $this->load->view('meu_painel_de_administracao/require_padrao/topo');
            $this->load->view('meu_painel_de_administracao/require_padrao/meus_dados');
            $this->load->view('meu_painel_de_administracao/require_padrao/menu');
            $this->load->view('meu_painel_de_administracao/view_categoria',$data);
            $this->load->view('meu_painel_de_administracao/require_padrao/rodape');
        
        }else if($opcao==2){
            
            $pg = $pg -1;
            $numreg = 5; // Quantos registros por p�gina vai ser mostrado
            $inicial = ($pg * 5); 
            $data['registro'] = $this->ccategoria->get_all_sub_categoria_com_paginacao($id_cate_anterior,$inicial,$numreg);
            $data['quantreg'] = $this->ccategoria->conta_registro_sub_categoria($id_cate_anterior);
            $data['numreg'] = $numreg;
            $data['pgg'] = $pg;
            $data['opcao_menu'] = $this->ccategoria->solicita_nome_opcoes_menu();
            $data['id_cate_anterior'] = $id_cate_anterior;
            $dados = $this->ccategoria->retorna_se_categoria_eh_zero_ou_nao($id_cate_anterior);
            $dados = $dados[0]->cate_id_fk;
            $data['cate_id_fk'] = $dados;


            $this->load->view('meu_painel_de_administracao/require_padrao/topo');
            $this->load->view('meu_painel_de_administracao/require_padrao/meus_dados');
            $this->load->view('meu_painel_de_administracao/require_padrao/menu');
            $this->load->view('meu_painel_de_administracao/view_sub_categoria',$data);
            $this->load->view('meu_painel_de_administracao/require_padrao/rodape');            
            
        }

    }


public function adicionar_categoria($pg=0){
        
        $this->load->model('ccategoria');
        
        $this->load->library('form_validation');
        
        $this->form_validation->set_rules('nome','Nome','required|trim|max_length[30]|is_unique[mov_categorias.cate_nome]');
                
        //if($this->input->post('posi') <> 'n'){
        //$this->form_validation->set_rules('posi','posição','required|trim|max_length[30]|is_unique[mov_categorias.cate_posicao]');
        //}else {
            $this->form_validation->set_rules('relacao_com_menu','Relação com o menu','required|trim|max_length[30]');
        //}
       
        if ($this->form_validation->run() == FALSE)
		{
                    $data['bt_criar_novo'] = 'ok';
                    $this->index($pg, 1,0,$data);

                }else{
                    
                   $new_cate['cate_nome'] = $this->input->post('nome');
                   $new_cate['cate_posicao'] = 'n';
                   $new_cate['cate_img'] = 'n';
                   $new_cate['cate_id_fk'] = '0';
                   $new_cate['cate_relacao_menu'] = $this->input->post('relacao_com_menu');
                   $new_cate['cate_principal'] = 'n';
                    
                    if($this->ccategoria->adicionar_nova_categoria($new_cate)==true){
                        
                        $this->session->set_flashdata('mensagemok','Categoria adicionada com sucesso !');
                        echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg)).'"; </script>'; 

                    }else{
                        
                        $this->session->set_flashdata('mensagemerro','Erro, tente novamente !');
                        echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg)).'"; </script>'; 
                    }
                    
                } 
    }
    
public function adicionar_sub_categoria($pg=0,$id_cate_anterior = 0){
        
        $this->load->model('ccategoria');
        
        $this->load->library('form_validation');
        
        $this->form_validation->set_rules('nome','Nome','required|trim|max_length[30]|is_unique[mov_categorias.cate_nome]');
       
        if ($this->form_validation->run() == FALSE)
		{
                    $data['bt_criar_novo'] = 'ok';
                    $this->index($pg,2,$id_cate_anterior,$data);

                }else{
                    
                   $new_cate['cate_nome'] = $this->input->post('nome');
                   $new_cate['cate_posicao'] = 'n';
                   $new_cate['cate_img'] = 'n';
                   $new_cate['cate_id_fk'] = $id_cate_anterior;
                   $new_cate['cate_relacao_menu'] = 'n';
                   $new_cate['cate_principal'] = 'n';
                    
                    if($this->ccategoria->adicionar_nova_categoria($new_cate)==true){
                        
                        $this->session->set_flashdata('mensagemok','Sub-categoria adicionada com sucesso !');
                        echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg.'/2/'.$id_cate_anterior)).'"; </script>'; 

                    }else{
                        
                        $this->session->set_flashdata('mensagemerro','Erro, tente novamente !');
                        echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg.'/2/'.$id_cate_anterior)).'"; </script>'; 
                    }
                    
                } 
}    
   
public function solicita_dados_cate($pg = 1, $id = 0){
        
        $this->load->model('ccategoria');
       
                    $categoria = $this->ccategoria->solicita_dados_cate($id);
                    
                    $data['nome_edit'] = $categoria[0]->cate_nome;
                    $data['menu_edit'] = $categoria[0]->cate_relacao_menu;
                    $data['bt_edit'] = 'ok';
                    $data['id'] = $id;

                    $this->index($pg, 1,0,$data);            
    } 

public function solicita_dados_sub_cate($pg = 1, $id = 0,$id_categoria_anterior=0){
        
        $this->load->model('ccategoria');
       
                    $categoria = $this->ccategoria->solicita_dados_cate($id);
                    
                    $data['nome_edit'] = $categoria[0]->cate_nome;
                    $data['menu_edit'] = $categoria[0]->cate_relacao_menu;
                    $data['bt_edit'] = 'ok';
                    $data['id'] = $id;

                    $this->index($pg,2,$id_categoria_anterior,$data);            
    } 
    
     
public function salva_alteracao($pg=0,$id =0, $categoria = null){
        
        $this->load->model('ccategoria');
        
        $this->load->library('form_validation');
        
        $this->form_validation->set_rules('nome','Nome','required|trim|max_length[30]');
                
        //if($this->input->post('posi') <> 'n'){
        //$this->form_validation->set_rules('posi','posição','required|trim|max_length[30]|is_unique[mov_categorias.cate_posicao]');
        //}else {
            $this->form_validation->set_rules('relacao_com_menu','Relação com o menu','required|trim|max_length[30]');
        //}
       
        if ($this->form_validation->run() == FALSE)
		{
                    $data['bt_criar_novo'] = 'ok';
                    $data['menu_edit'] = $categoria;
                    $this->index($pg, 1,0,$data);

                }else{
                    
                   $new_cate['cate_nome'] = $this->input->post('nome');
                   $new_cate['cate_posicao'] = 'n';
                   $new_cate['cate_img'] = 'n';
                   $new_cate['cate_id_fk'] = '0';
                   $new_cate['cate_relacao_menu'] = $this->input->post('relacao_com_menu');
                   $new_cate['cate_principal'] = 'n';
                    
                    if($this->ccategoria->altera_uma_categoria($id,$new_cate)==1){
                        
                        $this->session->set_flashdata('mensagemok','Categoria alterada com sucesso !');
                        echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg)).'"; </script>'; 

                    }else{
                        
                        $this->session->set_flashdata('mensagemerro','Erro, tente novamente !');
                        echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg)).'"; </script>'; 
                    }
                    
                } 
    }   
    
public function salva_alteracao_sub_cate($pg=0,$id =0, $categoria = null,$id_cate_anterior){
        
        $this->load->model('ccategoria');
        
        $this->load->library('form_validation');
        
        $this->form_validation->set_rules('nome','Nome','required|trim|max_length[30]');
       
        if ($this->form_validation->run() == FALSE)
		{
                    $data['bt_criar_novo'] = 'ok';
                    $data['menu_edit'] = $categoria;
                    $this->index($pg, 2,$id_cate_anterior,$data);

                }else{
                    
                   $new_cate['cate_nome'] = $this->input->post('nome');
                   $new_cate['cate_posicao'] = 'n';
                   $new_cate['cate_img'] = 'n';
                   //$new_cate['cate_id_fk'] = '0';
                   $new_cate['cate_relacao_menu'] = 'n';
                   $new_cate['cate_principal'] = 'n';
                    
                    if($this->ccategoria->altera_uma_categoria($id,$new_cate)==1){
                        
                        $this->session->set_flashdata('mensagemok','Sub-categoria alterada com sucesso !');
                        echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg.'/2/'.$id_cate_anterior)).'"; </script>'; 

                    }else{
                        
                        $this->session->set_flashdata('mensagemerro','Erro, tente novamente !');
                        echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg.'/2/'.$id_cate_anterior)).'"; </script>'; 
                    }
                    
            } 
}       
    
public function excluir_categoria($pg=0,$id=0){
        
        $this->load->model('ccategoria');
        
        if($this->ccategoria->verifica_se_a_categoria_esta_relacionada_com_um_produto($id) == 0){
            
                    
            //exclui banner da categoria ----------------------------------------
            $file =  $this->ccategoria->retorna_nome_do_banner($id);

            if(file_exists("./assets/banner_categorias/".$file[0]->cate_img)){

                @unlink("./assets/banner_categorias/".$file[0]->cate_img);  

                $result = $this->ccategoria->excluir_banners($id); 
            }
            // fim exclui banner da categoria ----------------------------------------

            //exclui a categoria
            if($this->ccategoria->exclui_uma_categoria($id)==1){
                               
                $this->session->set_flashdata('mensagemok','Categoria excluida com sucesso !');
                echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg)).'"; </script>';  
                 
            }else{

                $this->session->set_flashdata('mensagemerro','Erro, Possivelmente esta opção esta vinculada com alguma outra categoria !');
                echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg)).'"; </script>'; 
            }
            
        }else{
                $this->session->set_flashdata('mensagemerro','Atenção ! Esta categoria não poderá ser excluida, pois esta vinculada com um ou mais produtos, favor retirar os produtos desta categoria, após isso tentar excluir novamente. <BR>
                Dica: Verifique tambem se esta categoria possui sub categoria(s) vinculada(s) com um ou mais produtos, isso tambem impede a exclusão da mesma. ');
                echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg)).'"; </script>';    
        }         
}   
    
    
public function excluir_sub_categoria($pg=0,$id=0,$id_cate_anterior=0){
        
        $this->load->model('ccategoria');
        
        $permissao = 0;
          
        // verifica se a sub categora esta relacionada com algum produto
        if($this->ccategoria->verifica_se_a_subcategoria_esta_relacionada_com_um_produto($id) == 0){
            
            // verifica se sub categoria tem sub categorias 
            if($this->ccategoria->verifica_se_a_subcategoria_tem_subcategorias($id) <> 0){

                    $string_ids = $this->solicita_sub_categorias($id);            
                    $array = explode(',', $string_ids);

                    for($i = 0; $i < sizeof($array); $i++){

                        if($this->ccategoria->verifica_se_a_subcategoria_esta_relacionada_com_um_produto($array[$i]) <> 0){

                            $permissao = 100;
                            $this->session->set_flashdata('mensagemerro','Atenção ! esta sub categoria não poderá ser excluida, pois a sub categoria da mesma com o nome de: '.$this->ccategoria->solicita_nome_de_uma_categoria_string($array[$i]).', esta relacioanda com um ou mais produtos.');
                            echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg.'/2/'.$id_cate_anterior)).'"; </script>';    
                        } 
                    }

                    if($permissao <> 100){

                    if($this->ccategoria->exclui_uma_categoria($id)==1){

                        $this->session->set_flashdata('mensagemok','Categoria excluida com sucesso !');
                        echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg.'/2/'.$id_cate_anterior)).'"; </script>';  

                    }else{

                        $this->session->set_flashdata('mensagemerro','Erro, Possivelmente esta opção esta vinculada com alguma outra categoria !');
                        echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg.'/2/'.$id_cate_anterior)).'"; </script>'; 

                    }
                    }
                 
            }
                
        }else{
            $this->session->set_flashdata('mensagemerro','Atenção ! Esta sub categoria não poderá ser excluida, pois esta vinculada com um ou mais produtos, favor retirar os produtos da mesma, após isso tentar excluir novamente.');
            echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg.'/2/'.$id_cate_anterior)).'"; </script>';        
        }              
    }      
    
public function solicita_sub_categorias($id_sub_cate,$cont=0){
    
    $this->load->model('cproduto');  
    
    if($cont == 0){
        $pstring = null;
        $cont = 100;
    }
    
    $sub_cate = $this->cproduto->get_all_sub_categoria_id($id_sub_cate);
    
    if(sizeof($sub_cate) > 0){
    
        foreach($sub_cate as $sub){  

            if(empty($pstring)){       
                $pstring = (string)$sub->cate_id;  
            }else{     
                $pstring .= ','.(string)$sub->cate_id;
            }
            
            $id_sub_cate = $sub->cate_id;

            $str_aux = $this->solicita_sub_categorias($id_sub_cate,$cont);
            
            if($str_aux <> null){       
                $pstring .= ','.$str_aux;
            }
        }        
    }
    if(empty($pstring)){
     
    }else{
      return (string)$pstring;  
    }
}

    
public function solicita_img_cate($pg = 1, $id = 0){
        
        $this->load->model('ccategoria');
       
                    $categoria = $this->ccategoria->solicita_dados_cate($id);
                    $data['img_edit'] = $categoria[0]->cate_img;
                    $data['bt_banner'] = 'ok';
                    $data['id_banner'] = $id;

                    $this->index($pg, 1,0,$data);            
}     
 
public function salva_alteracao_banner($pg = 0 , $id = 0){
    
        $this->load->model('ccategoria');
        
         /* ROTINA DE UPLOAD */
        $config['upload_path'] = './assets/banner_categorias';
        $config['allowed_types'] = 'jpg|png|gif|JPEG';
        $config['encrypt_name'] = TRUE;	
        $config['max_width']  = '4000';
        $config['max_height']  = '4000';
        $config['max_size']   = '90000000000000000000000000000000000000000000';
        //$config['remove_spaces'] = TRUE;
        $this->load->library('upload',$config);
        //print_r( $this->upload->data());
        //break;
    
        if(!$this->upload->do_upload())
            {     
                $error = array('errado' => $this->upload->display_errors());
                $this->session->set_flashdata('msg422', $error['errado']);
                echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg.'?bt_banner=\"ok\"')).'"; </script>'; 
                //$this->solicita_img_cate($pg,$id);                                
            }
        else
            {   
                $file_data = $this->upload->data();
                $datas["cate_img"] = $file_data['file_name'];

                $this->db->where('cate_id', $id);
                if($this->db->update('mov_categorias',$datas)){
                    
                    $this->session->set_flashdata('msg42','Banner cadastrado com sucesso !');
                    $this->solicita_img_cate($pg,$id); 
                }
                else{
                    $this->session->set_flashdata('mensagemok','Erro ao salvar banner.');
                    echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg)).'"; </script>'; 
                }	
            }
    
}
    
public function excluir_banner($pg = 0 , $id = 0){    
    
        $this->load->model('ccategoria');
        $file =  $this->ccategoria->retorna_nome_do_banner($id);
        
        

        if(file_exists("./assets/banner_categorias/".$file[0]->cate_img)){

            @unlink("./assets/banner_categorias/".$file[0]->cate_img);  

            $result = $this->ccategoria->excluir_banners($id); 

            if($result == true){

                $this->solicita_img_cate($pg,$id);
                
            }else{
                
                $this->session->set_flashdata('mensagemerro','Erro ao Escluir banner.');
                echo '<script language="JavaScript"> window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg)).'"; </script>';                
                
            }

    }
    
}
    
public function confirma_excluir_categoria_principal($pg, $id){
 
 $array['msg'] = '   
?>  
&nbsp;
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
decisao = confirm("Deseja mesmo excluir esta categoria principal ?\n\
-Ao excluir esta categoria, todas as suas sub categorias serão excluidas. \n\
-Ao excluir esta categoria, o seu relacionamento com o item principal será excluido.\n\
-Ao excluir esta categoria, o banner da mesma também será excluido.\n\
-Caso esta categoria esteja relacionada com um ou mais produtos, não será possível fazer a exclusão.\n\
-Caso uma ou mais sub categorias desta categoria principal esteja relacionada com um ou mais produtos, não será possível fazer a exclusão.");

if (decisao){
    //ok
window.location="'.(base_url('meu_painel_de_administracao/categoria/excluir_categoria/'.$pg.'/'.$id)).'";
} else {
    //cancelar
window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg)).'";
}
</SCRIPT>
<?php
';

    $this->load->view('meu_painel_de_administracao/require_padrao/conteudo_confirmacao',$array);
}      
  
    
public function confirma_excluir_sub_categoria($pg,$id,$id_cate_anterior){
 
 $array['msg'] = '   
 
&nbsp;
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
decisao = confirm("Deseja mesmo excluir esta sub categoria ?\n\
-Ao excluir esta categoria, todas as suas sub categorias serão excluidas. \n\
-Caso esta sub categoria esteja relacionada com um ou mais produtos, não será possível fazer a exclusão.\n\
-Caso uma ou mais sub categorias desta sub categoria esteja relacionada com um ou mais produtos, não será possível fazer a exclusão.");

if (decisao){
    //ok
window.location="'.(base_url('meu_painel_de_administracao/categoria/excluir_sub_categoria/'.$pg.'/'.$id.'/'.$id_cate_anterior)).'";
} else {
    //cancelar
window.location="'.(base_url('meu_painel_de_administracao/categoria/index/'.$pg.'/2/'.$id_cate_anterior)).'";
}
</SCRIPT>

';

    $this->load->view('meu_painel_de_administracao/require_padrao/conteudo_confirmacao',$array);
}      
      
    
    
    
    
    
    
    
    
    
    
    
    
    
    
}
